package com.linran.utils.office;

import lombok.extern.slf4j.Slf4j;

/**
 * excel导出相关操作
 *
 *         <dependency>
 *             <groupId>com.alibaba</groupId>
 *             <artifactId>easyexcel</artifactId>
 *             <version>${easyexcel.version}</version>
 *         </dependency>
 */
@Slf4j
public class ExcelUtil {

//    /**
//     * EasyExcel export
//     *
//     * @param response  response
//     * @param dataList  dataList
//     * @param fileName  fileName
//     * @param pojoClass pojoClass
//     * @throws IOException IOException
//     */
//    public static void export(HttpServletResponse response, List<?> dataList,
//                              String fileName, Class<?> pojoClass) throws IOException {
//        // 这里注意 有同学反应使用swagger 会导致各种问题，请直接用浏览器或者用postman
//        response.setContentType("application/vnd.ms-excel");
//        response.setCharacterEncoding("utf-8");
//        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
//        fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
//        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
//        EasyExcel.write(response.getOutputStream(), pojoClass).sheet().doWrite(dataList);
//    }
//
//    public static void export(OutputStream outputStream, List<?> dataList,Class<?> pojoClass) throws IOException {
//        EasyExcel.write(outputStream, pojoClass).sheet().doWrite(dataList);
//    }
//
//    public static void exportWithTemplate(HttpServletResponse response, List<?> dataList,
//                                          String fileName, String templateFileName) throws IOException {
//        // 这里注意 有同学反应使用swagger 会导致各种问题，请直接用浏览器或者用postman
//        response.setContentType("application/vnd.ms-excel");
//        response.setCharacterEncoding("utf-8");
//        ClassPathResource classPathResource = new ClassPathResource(templateFileName);
//        // 如果没有给名字, 按模板的名字
//        if (StringUtils.isBlank(fileName)) {
//            String filename = classPathResource.getFilename();
//            fileName = filename != null ? filename : "模板.xls";
//        }
//        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
//        fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
//        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
//        ExcelTypeEnum excelTypeEnum;
//        if (fileName.endsWith(ExcelTypeEnum.XLS.getValue())) {
//            excelTypeEnum = ExcelTypeEnum.XLS;
//        } else {
//            excelTypeEnum = ExcelTypeEnum.XLSX;
//        }
//        // 这里 需要指定写用哪个class去写，然后写到第一个sheet，名字为模板 然后文件流会自动关闭
//        EasyExcel.write(response.getOutputStream()).withTemplate(classPathResource.getInputStream()).excelType(excelTypeEnum).sheet().doWrite(dataList);
//
//    }
//
//    public static void checkHeadWithTemplate(InputStream is, String templateFileName) throws IOException {
//        HeadCheckListener headCheckListener = new HeadCheckListener();
//        // 先读取模板头
//        ClassPathResource classPathResource = new ClassPathResource(templateFileName);
//        try (InputStream fis = classPathResource.getInputStream()) {
//            EasyExcel.read(fis, headCheckListener).sheet().doReadSync();
//        } catch (ExcelAnalysisException e) {
//            // xlsx格式, 任何异常都会被封装成ExcelAnalysisException抛出, 要特殊处理
//            Throwable cause = e.getCause();
//            if (!(cause instanceof ExcelTemplateHeadException)) {
//                throw e;
//            }
//        } catch (ExcelTemplateHeadException ignored) {
//        }
//        // 读取上传文件的列表头
//        try {
//            EasyExcel.read(is, headCheckListener).sheet().doReadSync();
//        } catch (ExcelAnalysisException e) {
//            // xlsx格式, 任何异常都会被封装成ExcelAnalysisException抛出, 要特殊处理
//            Throwable cause = e.getCause();
//            if (!(cause instanceof ExcelTemplateHeadException)) {
//                throw e;
//            }
//        } catch (ExcelTemplateHeadException ignored) {
//        }
//
//    }

}
